『AIOpsを活用してAWS監視を体験してみた 〜EC2も監視できるよ〜』というタイトルでLTしました #jawsug #opsjaws
あしざわです。
先日行われた OpsJAWS Meetup#27 EC2の運用と監視 というイベントに登壇者として参加しました。
当日は、『AIOpsを活用してAWS監視を体験してみた 〜EC2も監視できるよ〜』 というタイトルでLTをしました。本ブログはその登壇のレポートブログです。
登壇資料
LTの概要
AIOPsとは?
AIOpsという主題の解説から、LTは始まります。
AIOpsは2016年にGartner社が提唱した概念で、AIサービスを活用してAI基盤運用における問題を分析・改善・自動化する手法のことを指します。
AIOpsの成り立ちについては私はこれまでよく知らなかったので、こちらの資料を参考にしまとめてました。
AIOpsの手法はいくつもありますがすべてに触れてしまうと時間が足りなくなるため、今回は異常検出(検知) について話すことにしました。
異常検出(Anomaly Detection) とは、曜日・時間帯などのパターンを考慮しながらメトリクスの挙動が過去と異なる期間を認識するアルゴリズムです。
従来のしきい値ベースのアラート設定では監視が困難な強い傾向や反復パターンを持つメトリクスに適しています。
DatadogのAnomaly Monitorなどモダンなobservabilityツールを使っている方はこういった機能はお馴染みですよね。
AIOps と AWS
AWS x AI(Ops) なサービスはたくさんあります。
AWS Prescriptive Guidanceにも記載があるように、そもそもAIや機械学習という領域はAWSが20年前から注力してきた分野であるとAWSはよく言っています。
機械学習系のサービスはAIを使って何らかの形で機械学習をすることになるので、理解しやすいと思いますが運用系のサービスやセキュリティ系サービスでもAIは活用されています。
本LTでは、後述する章でCloudWatchの異常検出関連機能にフォーカスしているため、前者のAI活用について次の章でやってみた形式で各機能を紹介しました。
今回は紹介しませんでしたが、セキュリティ系サービスはAIの活用が顕著です。先述したAWS Prescriptive GuidanceのAI活用しているサービスの例でもAmazon Macie、Amazon GuardDutyが例に挙げられているくらいです。
直近のre:Inventでもセキュリティ系サービスであるAmazon DetectiveでAI関連機能のアップデートが多数ありました。以前LTでまとめて紹介したことがあるので気になるかたはこちらもどうぞ。
AWSのAIOps機能を使ってみた
異常検出といえばモニタリング、モニタリングといえばCloudWatchと、半ば強引な導入でCloudWatchの話に持ってきました。
みなさんお馴染みのCloudWatchですがCloudWatchという名前がついている関連の機能、めちゃくちゃあります。
参考: [資料公開]「AWSいまどきの監視(モニタリング)事情 -CloudWatchのその先に-」というタイトルで登壇してきました #jawsfesta #jawsug | DevelopersIO
以下の機能を紹介しました。すべて異常検出に関わるものです。
- Amazon CloudWatch Anomaly Detection
- Amazon CloudWatch Logs Anomaly Detection
- Amazon DevOps Guru
CloudWatch Anomaly Detection
この機能を使うと、最大2週間のCWメトリクスの数値に基づいた期待値のベースライン(帯域、バンド)を継続的に調整するメトリクスを作成できます。要するに直近2週間のメトリクスを分析して「このメトリクスはこの範囲にまとまっていました」という帯域を自動で作り出してくれます。
CloudWatch Alarmと組み合わせることで、メトリクスが範囲外に記録されたらアラーム、上振れたらアラームなど単純なしきい値監視とは違うアラートを設定できます。
料金はメトリクスの記録だけなら通常と変わりませんが、アラームを作成したときだけ以下公式料金ページに記載のように追加でメトリクス2個分の料金が別途発生する点だけ注意です。
異常検知アラームは、アラームメトリクス式にリストした各メトリクスのコストに加え、異常検知モデルによって生成される上限および下限バンドのメトリクスを考慮した 2 つの追加のアラームメトリクス料金を発生させます。
参考: 料金 - Amazon CloudWatch | AWS
この機能について気になる方は、以下ブログもご覧ください。
Amazon CloudWatch Logs Anomaly Detection
この機能を使うことで、CloudWatch Logs Loggroupに取り込まれたログを継続スキャンするようになりログデータの異常を検出できます。
私の検証ではデータが足りなかったのか検知しなかったのですが、検知すると以下のようにトレンドや優先度が表示されるそうです。
どんなログデータにも適しているのか?というとそういうわけではないそうで、うまく使うためには公式ドキュメントに以下の記載があるようにログ自体にレベルや重大度が記載があるようなものである必要があります。
・どのタイプのログ イベントが異常検出に適していますか?
ログ異常検出は、アプリケーション ログや、ほとんどのログ エントリが典型的なパターンに当てはまるその他の種類のログに適しています。INFO、ERROR、 DEBUGなどのログ レベルまたは重大度のキーワードを含むイベントを含むログ グループは、 ログの異常検出に特に適しています。
そして、この機能の利用に追加コストが発生しません。とても嬉しい!!!
この機能について気になる方は、以下ブログもご覧ください。
Amazon DevOps Guru
これだけCloudWatchではないのですが、通常から逸脱した動作を機械学習 (ML) を利用して検出することが可能なサービスです。
異常な動作をAWSアカウント全体や、CloudFormationスタックのような単位で検出できます。有効化も1画面で簡単です。
サービスを有効化すると、簡易的なダッシュボードが利用できます。検知したインサイトだけでなくMTTR(平均修理時間)まで表示されていました。
料金は1リソース単位で以下の料金が発生します。あまりスコープを広げて有効化してしまうとコストが嵩んでしまうかも。
- S3バケット、Lambda関数:
0.0028 USD / 1h
- EC2(ASG)、ECS、EKSなど:
0.0042 USD / 1h
前述したAnomaly Detecton系のサービスと比べると「サービスを有効化するだけでいい感じに異常検知をしてくれる」サービスなので、具体的にどんなインサイトを出してくれるのかや料金の目処がつけづらいと思いますのでまずは小さく始めてみるのが良さそうです。
DevOps Guruの活用ケースのサンプルとして、NAT Gatewayの異常負荷を検出したブログがあります。こちらが参考になりそうです。
このサービスについて気になる方は、以下ブログもご覧ください。
最後に
登壇時は特に触れませんでしたが、今回の資料で紹介したAIOpsの概念は2016年/2019年に定義されたものであり、2024年現在は生成AIの登場によりAIOpsの概念も大きく変わっているはずです。そのような背景はあまりフォローできていないので、またどこかに機会で生成AI登場以降のAIOpsについても語ってみたいなと思います。
以上です。